﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FunctionGraph
{
    public abstract class ExpressionVisitor<T>
    {
        public abstract T VisitConstant(ConstantNode constantNode);

        public abstract T VisitVariable(VariableNode variableNode);

        public abstract T VisitBinary(BinaryNode binaryNode);

        public abstract T VisitUnary(UnaryNode unaryNode);

        public virtual T VisitBinarySolutionEval(BinarySolutionEvaluationNode node)
        {
            throw new NotImplementedException();
        }
        public virtual T VisitExprSolutionEvaluationNode(ExprSolutionEvaluationNode exprSolutionEvaluationNode)
        {
            throw new NotImplementedException();
        }
    }
}
